The “many-to-one” topology deployment is very common in the field of data backup/replication. For example, big companies typically deploy a replication/backup client at each of their local branches for fast local recovery. To provide disaster recovery capability, a centralized replication/backup server is often deployed at the replication/backup site for all the backup/replication clients at the local branches. In such a topology, the replication/backup clients at the multiple local branches replicate/backup to a single centralized replication/backup server. Since different local branches have different workloads during different time periods, the replication/backup server may experience varying amounts of service requests from each replication/backup client. Moreover, it is possible that additional replication/backup clients may be introduced in the future, which further complicates the dynamics of service requests to the replication/backup server.
Conventional methods for handling large amount of service requests are either static or not designed to deal with storage systems. For example, queuing mechanisms are typically used to deal with the case when the number of service requests (temporarily) exceeds the capability of the server. However, existing queuing mechanisms are all static. Users predefine the rules which statically determine the mapping of service requests to different priority queues, the service requests are then executed in the order based on their priorities. Those static rules are not adequate to address the dynamic nature of the clients whose demands change over time. Moreover, maintaining a queue also consumes resources (e.g., memory) and the size of a queue is limited by its pre-defined length. Token bucket is another often used approach to rate-limit the service requests sent by a client. Similar to a queue, a token bucket also falls in to the “static” category where the generating rate of tokens is pre-defined. The Transmission Control Protocol (TCP) provides a dynamic mechanism for managing transmission rate by controlling the size of a congestion window. However, it is designed to deal with network congestions. Thus, there is a need for a mechanism to dynamically manage resources on a server such that all clients are equally satisfied based on their needs.